<?php
/**
 * Controller_Ajax_Auth
 *
 * Класс Controller_Ajax_Auth отвечает за обработку запросов связанных с авторизацией
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Controller_Ajax_Auth extends Controller_Ajax {

	/**
	 * (non-PHPdoc)
	 * @see Controller_Ajax::actionSwitch()
	 */
	public function actionSwitch() {
	  Service_Debug::setDebug();
		switch ($this->arrRequest[2]) {
			case 'sign_in':
				$this->signIn();
				break;
			case 'sign_up':
				$this->signUp();
				break;
			default: $this->setError(404);
 		}
	}

	/**
	 * Вход в систему
	 *
	 */
	public function signIn() {
	  Service_Debug::setDebug();
	  $loginOrEMail = isset($_POST['loginOrEMail']) ? Service_Escape::absolutelyEscapeString($_POST['loginOrEMail']) : '';
	  $password = isset($_POST['password']) ? Service_Escape::absolutelyEscapeString($_POST['password']) : '';
		
	  if (empty($loginOrEMail)) return $this->makeStandardError(Service_Translate::getText('Не заполнен логин'));
	  if (empty($password)) return $this->makeStandardError(Service_Translate::getText('Не заполнен пароль'));

	  $objAuth = new User_Auth($loginOrEMail, $password);
	  try {
		  if (!$objAuth->signIn()) throw new Exception($this->makeStandardError(Service_Translate::getText('Не удалось войти')));
	  } 
	  catch (Exception $e) {
		  return $this->makeStandardError($e->getMessage());
		}		
	  
		$objSession = User_Session::instance();
		$this->arrReturn = array('result' => 'OK', 'data' => array('ID_user', $objSession->getUserId()));
  }

	/**
	 * Регистрация пользователя
	 *
	 */
	public function signUp() {
	  Service_Debug::setDebug();
	  $login = isset($_POST['login']) ? Service_Escape::absolutelyEscapeString($_POST['login']) : '';
	  $eMail = isset($_POST['e_mail']) ? Service_Escape::absolutelyEscapeString($_POST['e_mail']) : '';
	  $password = isset($_POST['pass']) ? Service_Escape::absolutelyEscapeString($_POST['pass']) : '';
		
	  if (empty($login)) return $this->makeStandardError(Service_Translate::getText('Не заполнен логин'));
	  if (empty($eMail)) return $this->makeStandardError('Не заполнен адрес электронной почты');

	  $objUser = new User_User();
	  $objUser->setField('login', $login);
	  $objUser->setField('e_mail', $eMail);
		$objUser->setField('pass', $password);
	  try {
		  if (!$objUser->signUpUser()) return $this->makeStandardError('Не удалось зарегистрировать');
	  } 
	  catch (Exception $e) {
		  return $this->makeStandardError($e->getMessage());
		}		
	  
		$this->arrReturn = array('result' => 'OK', 'data' => $objUser->tableFields);
  }

}
?>